package com.aiapphub.SystemCode.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 调试工具类
 */
@Slf4j
@Component
public class DebugUtils {
    
    /**
     * 打印方法调用信息
     */
    public static void logMethodCall(String className, String methodName, Object... params) {
        StringBuilder sb = new StringBuilder();
        sb.append("=== 方法调用 ===\n");
        sb.append("类: ").append(className).append("\n");
        sb.append("方法: ").append(methodName).append("\n");
        sb.append("参数: ");
        
        for (int i = 0; i < params.length; i++) {
            sb.append("param").append(i).append("=").append(params[i]);
            if (i < params.length - 1) {
                sb.append(", ");
            }
        }
        sb.append("\n==================");
        
        log.debug(sb.toString());
    }
    
    /**
     * 打印对象信息
     */
    public static void logObject(String name, Object obj) {
        log.debug("=== 对象信息 ===");
        log.debug("名称: {}", name);
        log.debug("类型: {}", obj != null ? obj.getClass().getName() : "null");
        log.debug("值: {}", obj);
        log.debug("===============");
    }
    
    /**
     * 打印Map信息
     */
    public static void logMap(String name, Map<?, ?> map) {
        log.debug("=== Map信息 ===");
        log.debug("名称: {}", name);
        if (map != null) {
            map.forEach((key, value) -> 
                log.debug("  {}: {}", key, value));
        } else {
            log.debug("Map为null");
        }
        log.debug("==============");
    }
    
    /**
     * 打印异常信息
     */
    public static void logException(String context, Exception e) {
        log.error("=== 异常信息 ===");
        log.error("上下文: {}", context);
        log.error("异常类型: {}", e.getClass().getName());
        log.error("异常消息: {}", e.getMessage());
        log.error("堆栈跟踪:", e);
        log.error("==============");
    }
    
    /**
     * 打印HTTP请求信息
     */
    public static void logHttpRequest(String method, String url, String headers, String body) {
        log.debug("=== HTTP请求 ===");
        log.debug("方法: {}", method);
        log.debug("URL: {}", url);
        log.debug("请求头: {}", headers);
        log.debug("请求体: {}", body);
        log.debug("===============");
    }
    
    /**
     * 打印HTTP响应信息
     */
    public static void logHttpResponse(int statusCode, String headers, String body) {
        log.debug("=== HTTP响应 ===");
        log.debug("状态码: {}", statusCode);
        log.debug("响应头: {}", headers);
        log.debug("响应体: {}", body);
        log.debug("===============");
    }
}
